/*TCSS 360 ConferenceGuru
 * 
 * Author: Darrion
 * Author (who wrote a few methods): Tyler Simrell
 * 
 * This class is a model for a conference paper that has a:
 * title, manuscript text, and author, acceptance recommendation,
 * a list of reviews, and a deleted flag.
 * The text is intended to be read and reviewed by reviewers. The reviews
 * are to be used by subprogram chairs to make a recommendation and by author
 * to make revisions is this paper is accepted. The recommendation is to be 
 * used by the program chair to make decision as to accept or reject his paper
 * to be presented at this conference.
 */
package model;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

public class ConferencePaper  implements Serializable{
	
	private static final long serialVersionUID = -8579845364743590006L;
	private final String title;
	private String email;
	private String categoryOfPaper;
	private String keywords;
	private String abstractOfPaper;
	private String manuscriptFile;
	private final String authorName;
	
	public final static String UNDECIDED = "Undecided";
	public final static String ACCEPTED = "Accepted";
	public final static String REJECTED = "Rejected";
	public final static String NOTSUBMITTED = "Not-Submitted";

	private List<Review> reviews;
	private String recommendation;
	private String status; //Statuses can be "yes", "no", "undecided". It defaults to undecided.
	private boolean deleted = false;
	
	public ConferencePaper(String title, String manuscriptFile, String author){
		this.title = title;
		this.manuscriptFile = manuscriptFile;
		this.authorName = author;
		reviews = new ArrayList<Review>();
		this.status = UNDECIDED;
		this.recommendation = NOTSUBMITTED;
	}
	
	// This method sets the review
	public void setReview(Review the_review) {
		reviews.add(the_review);
	}
	
	// This method sets the recommendation
	public void setRecommendation(String the_recommendation){
		recommendation = the_recommendation;
	}
	
	// This method sets the acceptance status of this conference paper
	public void setAcceptance(String the_status) {
		this.status = the_status;
	}
	
	// This method sets the file path for manuscript.
	public void setManuscriptFile(String the_manuscript_file_path){
		manuscriptFile = the_manuscript_file_path;
	}
	
	// This method sets the deleted flag for this conference paper
	public void setDeleted(boolean the_status) {
		this.deleted = the_status;
	}
	
	// This method sets the category the paper.
	// Created by Tyler Simrell
	public void setCategoryOfPaper(String categoryOfPaper) {
		this.categoryOfPaper = categoryOfPaper;
	}
	
	// This method sets the keywords attached to the paper.
	// Created by Tyler Simrell
	public void setKeywords(String keywords) {
		this.keywords = keywords;
	}
	
	// This method sets the email of the author who wrote the paper.
	// Created by Tyler Simrell
	public void setEmail(String email) {
		this.email = email;
	}
	
	// This method sets the abstract of the paper.
	// Created by Tyler Simrell
	public void setAbstractOfPaper(String abstractOfPaper) {
		this.abstractOfPaper = abstractOfPaper;
	}
	
	// This method returns a list of the reviews for this conference paper 
	public List<Review> getReviews() {
		return reviews;
	}
	
	// This method return the name of the author for this conference paper
	public String getAuthorName() {
		return authorName;
	}

	// This method gets the recommendation for this paper
	public String getRecommendation() {
		return recommendation;
	}
	
	//This method returns the name of the paper.
	public String getTitle(){
		return title;
	}
	
	//This method returns the acceptance status of a paper.
	public String getAcceptanceStatus(){
		return status;
	}
	
	//This method returns the text of a manuscript.
	// Edited by Tyler Simrell
	public String getManuscriptFile(){
		return manuscriptFile;
	}
	
	// This method returns the abstract of the paper.
	// Created by Tyler Simrell
	public String getAbstractOfPaper() {
		return abstractOfPaper;
	}


	// This method gets the email of the author who wrote the paper.
	// Created by Tyler Simrell
	public String getEmail() {
		return email;
	}

	// This method gets the category of the paper.
	// Created by Tyler Simrell
	public String getCategoryOfPaper() {
		return categoryOfPaper;
	}

	// This method gets the keywords attached to the paper.
	// Created by Tyler Simrell
	public String getKeywords() {
		return keywords;
	}

	// This method returns the deleted status of this conference paper.
	public boolean isDeleted() {
		return deleted;
	}
}
